import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
// JPanel   小窗体
public class Image extends  JPanel {


    // 创建成员变量   定义全局图片对象
    BufferedImage bImage;
    public static void main(String[] args)  throws  Exception{
        JFrame jFrame = new JFrame();
        // 设置大小
        jFrame.setSize(1000,700);
        jFrame.setTitle("java电子相册");
        // 设置窗口剧中
        jFrame.setLocationRelativeTo(null);
        // 关闭窗口  把程序停掉了
        jFrame.setDefaultCloseOperation(3);
        // 创建一个面板
        Image imagep = new Image();
        // 将面板添加到窗口上
        jFrame.add(imagep);
        // 将图片装载到数组当中
        imagep.loadImges();
        // 调用重写的方法进行重新绘画
        // imagep.repaint();
        imagep.newTask();
        //显示出窗口
        jFrame.setVisible(true);
    }
    int iNumber=0;
    // 开启一个新得到任务
    public void newTask(){
        new Thread(new  Runnable(){
            @Override
            public void run() {
                // 去改变ff的值
                while (true){
                    //  拿到一张图片
                    bImage = bufferedImages[iNumber];
                    iNumber++;
                    //如果 iNumber ==4了 就说名
                    if (iNumber ==4 ){
                        iNumber =0;
                    }
                    while (true){
                        // 如果 显示不到100f
                        if (fnuumer < 100f){
                            fnuumer =  fnuumer+1f;
                            //调用重绘方法
                            repaint();
                        }else {
                            fnuumer = 0f;
                            break;
                        }
                        // 太快了  睡眠
                        try {
                            Thread.sleep(80);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
        ).start();
    }
    // 定义一个数组   用来放图片
    BufferedImage [] bufferedImages = new BufferedImage[4];

    // 方法是将图片放进数组当中
    public void   loadImges() throws Exception{
        /*
         *   将图片放到数组当中
         * */
        for (int i=1;i<=4;i++) {
            // 没循环一次 都需要加载一张图片
            BufferedImage images = ImageIO.read(Image.class.getResource("/img/tp" + i + ".png"));
            // 把每个读取到的图片放到数组当中区
            bufferedImages[i-1] = images;
        }
        // 将数组的图片赋值给全局的成员变量
        bImage = bufferedImages[0];
    }
    float fnuumer= 10f;
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        // 创造一只画笔
        Graphics2D graphics2D = (Graphics2D) g;
        // 给图片添加渐变效果
        graphics2D.setComposite(AlphaComposite.SrcOver.derive((fnuumer/ 100f)));
        // 把图片画到窗口上去
        g.drawImage(bImage,0,0,
                bImage.getWidth(),bImage.getHeight(),null);
    }
}
